/*
 *Description:
 *User:laoHu
 *Created with Intellij IDEA 2025
 *Data:2025.06.14
 *Time:20:19
 */

//String练习
public class Main{

    //字符串的截取和去除左右两边的空格
    public static void main10(String[] args) {
        //截取字符串
        String s = "HelloWorld";
        System.out.print(s.substring(0,5) + " ");
        System.out.println(s.substring(5));
        //去除左右两边的空格，中间的去除不了
        String s2 = "   abc def   ";
        System.out.println(s2.trim());
    }

    //字符串分割:split
    public static void main9(String[] args) {

        String s = "ab abc abcd";
        String[] s1 = s.split("\\ ");//正则表达式
        for(String str: s1){
            System.out.println(str);
        }
        //regex是按照指定符合分割(正则表达式)，limit是限制分割的个数
        String[] s2 = s.split("\\ ",3);
        for(String str2:s2){
            System.out.println(str2);
        }

        String s3 = "192\\123\\55\\4";
        String[] strings = s3.split("\\\\");//\\是正则表达式
        //常见的正则表达式还有\\. \\+ \\* \\| \\\\表示\\
        for(String s5 : strings){
            System.out.println(s5);
        }

        //多次分割
        String t = "name=zs&age=lisi";
        String[] strings1 = t.split("&");
        for(String tem1 : strings1){
            String[] tem2 = tem1.split("=");
                System.out.println("[" + tem2[0] + "=" + tem2[1] + "]");
            }
        }


    //替换replace:First/All
    public static void main8(String[] args) {
        String s = "int_Max_Of_Value";

        System.out.println(s.replace("_","/"));
        System.out.println(s.replaceFirst("_","@"));
    }

    //格式化
    public static void main7(String[] args) {
        String s = String.format("%d-%d-%d",2025,6,15);
        System.out.println(s);//2025-6-15
    }

    //大小写转变
    public static void main6(String[] args) {

        String s1 = "HELLO";
        String s2 = "world";
        System.out.println(s1.toLowerCase());
        System.out.println(s2.toUpperCase());
    }

    //数转变为字符串或字符串转变为数字
    public static void main5(String[] args) {
//        //数字转为字符串
//        String str1 = String.valueOf(1234);
//        String str2 = String.valueOf(12.22);
//        System.out.println(str1);
//        System.out.println(str2);
//        //将字符串转为数字
//        int data1 = Integer.parseInt(str1);
//        double data2 = Double.parseDouble(str2);
//        System.out.println(data1);
//        System.out.println(data2);

        char[] bytes = {'a','b','c','d'};
        String s = String.valueOf(bytes,1,3);
        System.out.println(s);


    }

    //查找字符串
    public static void main4(String[] args) {
        //charAt（）方法，得到当前位置的字符
        String str  = "ababcabcd";
       // System.out.println(str.charAt(3));
        //indexOf方法找到当前第一次出现的位置下标
       int pos =  str.indexOf('a');
        System.out.println(str.charAt(pos));
        int pos1 = str.indexOf("abcd");
        System.out.println(pos1);
        //从指定位置查找指定字符第一次出现的位置
       int pos2 =  str.indexOf('c',3);
        System.out.println(pos2);
        int pos3 = str.indexOf("abc",4);
        System.out.println(pos3);
        //lastIndex从后往前查找
        int pos4 = str.lastIndexOf('a');
        System.out.println(pos4);
        int pos5 = str.lastIndexOf("ab");
        System.out.println(pos5);
        //指定范围查找
        int pos6 = str.lastIndexOf('d',6);
        System.out.println(pos6);//找不到
        int pos7 = str.lastIndexOf("abc",6);
        System.out.println(pos7);

    }

    //String类型实现的接口public final class String
    //    implements java.io.Serializable, Comparable<String>, CharSequence,
    //               Constable, ConstantDesc {
    public static void main3 (String[] args) {
        //使用比较
        String str1 = "aa";
        String str2 = "aac";
        String str3 = "abcd";
        String str4 = "Aa";
        //使用compareTo方法比较，比较大小，返回是int
        System.out.println(str1.compareTo(str2));//-1
        System.out.println(str2.compareTo(str3));//1
        System.out.println(str3.compareTo(str4));//-1
        //比较相等，返回类型是boolean
        System.out.println(str4.equalsIgnoreCase(str1));

        //compareIgnoreCase方法忽略大小写
        System.out.println(str1.compareToIgnoreCase(str4));
    }
    public static void main2(String[] args) {
        //为什么说子字符串是常量字符串，不可被修改
        //@Stable
        //    private final byte[] value;
        //因为value数组是被private修饰的，在不同类中
        //不可得到value数组，因此不可修改常量字符串
        //
        String str = "abcd";
        //str.charAt(0) = 's';//Variable expected
    }

    public static void main1(String[] args) {

        //字符类型是一种引用数据类型，本身不存储字符串
        //1.创建
        String str = "abcd";
        //2.new 对象
        String str1 = new String("abcdef");
        //创建字符数组
        char[] chars = {'a','b','c','d'};
        String str2 = new String(chars);
        //创建字节数组
        byte[] bytes = new byte[]{1,2,3,4};
        String str3 = new String(bytes);

        for (int i = 0; i <str1.length(); i++) {
            //得到当前下标的字符元素
            System.out.print(str1.charAt(i));
        }

    }
}
